package pruebas;


import negModel.*;
import junit.framework.TestCase;

public class ListaOponentesTest extends TestCase {

	Aleron aleron1,aleron2,aleron3;
	Carroceria carroc1,carroc2,carroc3;
	Combustible comb;
	Tanque tanque1,tanque2,tanque3;
	ControladorDeCombustible cont1,cont2,cont3;
	Escape esc1,esc2,esc3;
	Llanta llan1,llan2,llan3;
	Neumatico neum1,neum2,neum3; 
	Rueda rue1,rue2,rue3; 
	Transmision trans1,trans2,trans3;
	Motor motor1,motor2,motor3;
	
	ListaPartes l1,l2,l3;
	Auto auto1,auto2,auto3;
	
	ListaOponentes listaOponentes;
	
	protected void setUp() throws Exception {
		super.setUp();
		l1 = new ListaPartes();
		l2 = new ListaPartes();
		l3 = new ListaPartes();
		listaOponentes = new ListaOponentes();
		
		aleron1 = new Aleron(1000,15,5,new String("Aleron tipo 1"),new AlgoPesos(100),true,5,4,8,10);
		aleron2 = new Aleron(1500,20,6,new String("Aleron tipo 2"),new AlgoPesos(150),true,10,5,8,10);
		aleron3 = new Aleron(2000,25,7,new String("Aleron tipo 3"),new AlgoPesos(200),true,15,6,8,10);
		
		carroc1 = new Carroceria (1000,500,3,new String("Carroceria pesada"),new AlgoPesos(1000),true,5,1,10,10,80,100);
		carroc2 = new Carroceria (1500,300,5,new String("Carroceria peso medio"),new AlgoPesos(2000),true,5,1,8,10,80,100);
		carroc3 = new Carroceria (2000,200,7,new String("Carroceria liviana"),new AlgoPesos(5000),true,5,1,10,10,80,100);
		
		comb = new Combustible(88,1);
		
		tanque1 = new Tanque(1000,50,new String ("Tanque capacidad 1"),new AlgoPesos(100),true,100,1000,comb);
		tanque2 = new Tanque(1500,60,new String ("Tanque capacidad 2"),new AlgoPesos(200),true,125,2000,comb);
		tanque3 = new Tanque(2000,70,new String ("Tanque capacidad 3"),new AlgoPesos(300),true,150,3000,comb);
		tanque1.cargarComb();
		
		cont1 = new ControladorDeCombustible (1000,50,10,new String("Sistema de Inyeccion 1 - porcentaje 70%"),new AlgoPesos(100),true,10,7);
		cont2 = new ControladorDeCombustible (1500,60,15,new String("Sistema de Inyeccion 2 - porcentaje 80%"),new AlgoPesos(200),true,15,8);
		cont3 = new ControladorDeCombustible (2000,50,20,new String("Sistema de Inyeccion 3 - porcentaje 90%"),new AlgoPesos(300),true,20,9);
		
		esc1 = new Escape(1000,20,70,new String("Escape 1 - eliminacion 70%"),new AlgoPesos(100),true,100,7);
		esc2 = new Escape(1500,22,80,new String("Escape 2 - eliminacion 80%"),new AlgoPesos(300),true,150,8);
		esc3 = new Escape(2000,24,90,new String("Escape 3 - eliminacion 90%"),new AlgoPesos(500),true,200,9);
		
		llan1 = new Llanta (1000,25,165,new String ("Llanta pesada"),new AlgoPesos(100),false,10,0.05);
		llan2 = new Llanta (1500,20,175,new String ("Llanta peso medio"),new AlgoPesos(400),false,15,0.05);
		llan3 = new Llanta (2000,18,185,new String ("Llanta liviana"),new AlgoPesos(600),false,20,0.05);
		
		neum1 = new Neumatico(1000,20,150,new String ("Neumatico leve adhesion"),new AlgoPesos(100),false,10,100,10,3);
		neum2 = new Neumatico(1500,22,160,new String ("Neumatico media adhesion"),new AlgoPesos(350),false,15,100,10,4);
		neum3 = new Neumatico(2000,23,180,new String ("Neumatico alta adhesion"),new AlgoPesos(700),false,20,100,10,5);
		
		rue1 = new Rueda(llan1,neum1,new String ("Rueda con "+ neum1.getDetalle()+" y "+ llan1.getDetalle()),false);
		rue2 = new Rueda(llan2,neum2,new String ("Rueda con "+ neum2.getDetalle()+" y "+ llan2.getDetalle()),false);
		rue3 = new Rueda(llan3,neum3,new String ("Rueda con "+ neum3.getDetalle()+" y "+ llan3.getDetalle()),false);
		
		trans1 = new Transmision(1000,50,50,new String("Transmision tipo 1 - cambios 5 - Automatica"),new AlgoPesos(1000),false,50,5,false);
		trans2 = new Transmision(1500,60,70,new String("Transmision tipo 2 - cambios 5 - Automatica"),new AlgoPesos(1500),false,75,5,false);
		trans3 = new Transmision(2000,70,90,new String("Transmision tipo 3 - cambios 5 - Automatica"),new AlgoPesos(2000),false,100,5,false);
		
		motor1 = new Motor(1000,140,200,new String("Motor Chevrolet 1000 cc"),new AlgoPesos(1000),false,100,1000);
		motor2 = new Motor(1500,170,300,new String("Motor Audi 1500 cc"),new AlgoPesos(1500),false,150,1500);
		motor3 = new Motor(2000,200,500,new String("Motot BMW 2000 cc"),new AlgoPesos(2000),false,200,2000);
		
		l1.add(aleron1);
		l1.add(carroc1);
		l1.add(tanque1);
		l1.add(cont1);
		l1.add(esc1);
		l1.add(rue1);
		l1.add(trans1);
		l1.add(motor1); auto1 = new Auto(l1,"Peugeot 206 WRC");
		
		l2.add(aleron2);
		l2.add(carroc2);
		l2.add(tanque2);
		l2.add(cont2);
		l2.add(esc2);
		l2.add(rue2);
		l2.add(trans2);
		l2.add(motor2); auto2 = new Auto(l2,"Subaru Impreza GT");
		
		l3.add(aleron3);
		l3.add(carroc3);
		l3.add(tanque3);
		l3.add(cont3);
		l3.add(esc3);
		l3.add(rue3);
		l3.add(trans3);
		l3.add(motor3); auto3 = new Auto(l3,"BMW Z4");
		
		listaOponentes.add(auto1);
		listaOponentes.add(auto2);
		listaOponentes.add(auto3);
				
	}

	public void testGuardar() throws Exception {
		ListaOponentes.guardar("ListaOponentes.xml", listaOponentes);
	}

	public void testCargar() throws Exception {
		ListaOponentes lopAux = ListaOponentes.cargar("ListaOponentes.xml");
		
		Auto autoAux1 = (Auto)lopAux.get(0);
		assertEquals(autoAux1.getTipo(),auto1.getTipo());
		
		Auto autoAux2 = (Auto)lopAux.get(1);
		assertEquals(autoAux2.getTipo(),auto2.getTipo());
		
		Auto autoAux3 = (Auto)lopAux.get(2);
		assertEquals(autoAux3.getTipo(),auto3.getTipo());
		
		
		
		
		
	}

}
